/**
 * @description 设置系统剪贴板的内容
 * @param data 需要设置的内容
 * @param showToast 配置是否弹出提示，默认弹出提示
 * @returns {Promise<string>}
 */
export const SetClipboardData = (data, showToast = true) => {
  return new Promise((resolve, reject) => {
    uni.setClipboardData({
      data,
      showToast,
      success: (res) => {
        resolve(res);
      },
      fail: (err) => {
        reject(err);
      },
    });
  });
};

/**
 * @description 获取系统剪贴板内容
 * @returns {Promise<string>}
 */
export const GetClipboardData = () => {
  return new Promise((resolve, reject) => {
    uni.getClipboardData({
      success: (res) => {
        resolve(res);
      },
      fail: (err) => {
        reject(err);
      },
    });
  });
};

/**
 * toast提示,默认显示时长1500ms,options参考微信的showToast
 * @param {string} title toast标题
 * @param {number} options.duration toast显示时长
 * @param {string} options.icon toast图标
 * @param {boolean} options.mask 是否显示透明蒙层，防止触摸穿透
 * @param {function} options.success 接口调用成功的回调函数
 * @param {function} options.fail 接口调用失败的回调函数
 * @param {function} options.complete 接口调用结束的回调函数（调用成功、失败都会执行）
 */
export function Toast(title, options) {
  uni.showToast({
    title,
    duration: 1500,
    icon: "none",
    mask: true,
    ...options,
  });
}

/**
 * 隐藏消息提示框
 */
export function HideToast() {
  uni.hideToast();
}

/**
 * 展示loading,默认显示时长1500ms,options参考微信的showLoading
 * @param {string} title loading标题
 * @param {number} options.title loading标题,会覆盖第一个参数
 * @param {boolean} options.mask 是否显示透明蒙层，防止触摸穿透
 * @param {function} options.success 接口调用成功的回调函数
 * @param {function} options.fail 接口调用失败的回调函数
 * @param {function} options.complete 接口调用结束的回调函数（调用成功、失败都会执行）
 */
export function Loading(title, options) {
  uni.showLoading({
    title,
    mask: true,
    ...options,
  });
}

/**
 * 隐藏 loading 提示框
 */
export function HideLoading() {
  uni.hideLoading();
}
